package 二叉树层序遍历.二叉树的最小深度;

public class Solution2 {
    public int minDepth(TreeNode root) {
        // 递归思想解决
        // ① 参数：TreeNode，返回值：int(level)
        // ② 终止条件：root == null
        // ③ 单层递归的逻辑：遍历左右子树，返回寻找左右子树的最小深度(如果左右子树一个为0，一个不为0，最小高度不应该为0)
        if (root == null)
            return 0;
        int leftMin = minDepth(root.left);
        int rightMin = minDepth(root.right);
        if (leftMin == 0)
            return rightMin + 1;
        if (rightMin == 0)
            return leftMin + 1;
        return leftMin < rightMin ? leftMin + 1 : rightMin + 1;
    }
}
